package aufgabe;

import geometrie.Kreis;
import geometrie.Punkt;
import geometrie.Quader;
import geometrie.Rechteck;
import geometrie.Zylinder;

public class AufgabePool
{
    private Quader q;

    private Zylinder z1;

    private Zylinder z2;

    private Zylinder z3;

    public Quader getQ()
    {
        return q;
    }

    public void setQ(Quader q)
    {
        this.q = q;
    }

    public Zylinder getZ1()
    {
        return z1;
    }

    public void setZ1(Zylinder z1)
    {
        this.z1 = z1;
    }

    public Zylinder getZ2()
    {
        return z2;
    }

    public void setZ2(Zylinder z2)
    {
        this.z2 = z2;
    }

    public Zylinder getZ3()
    {
        return z3;
    }

    public void setZ3(Zylinder z3)
    {
        this.z3 = z3;
    }

    public AufgabePool()
    {
        Punkt bezugR = new Punkt(74, 390);
        Rechteck r = new Rechteck(bezugR, 316, 875);
        q = new Quader(r, 2);
        Punkt bezugK1 = new Punkt(791, 390);
        Kreis k1 = new Kreis(bezugK1, 158);
        z1 = new Zylinder(k1, 2);
        Punkt bezugK2 = new Punkt(0, 390);
        Kreis k2 = new Kreis(bezugK2, 74);
        z2 = new Zylinder(k2, 2);
        Punkt bezugK3 = new Punkt(0, 222);
        Kreis k3 = new Kreis(bezugK3, 74);
        z3 = new Zylinder(k3, 2);
    }

    public AufgabePool(Quader q, Zylinder z1, Zylinder z2, Zylinder z3)
    {
        super();
        this.q = q;
        this.z1 = z1;
        this.z2 = z2;
        this.z3 = z3;
    }

    public double poolVolumen()
    {
        return q.volumen() + z1.volumen() / 2 + z2.volumen();
    }

    public double poolUmfang()
    {
        return q.getBoden().getLaenge() * 2 + z1.getBoden().umfang() / 2 + z2.getBoden().umfang() + (q.getBoden().getBreite() - 4 * z3.getBoden().getRadius());
    }

    public double poolInnererMantel()
    {
        return poolUmfang() * q.getHoehe() + poolWasserOberflaeche();
    }

    public double poolWasserOberflaeche()
    {
        return poolVolumen() / q.getHoehe();
    }

    public double kostenZaun(double preisProStueck)
    {
        return preisProStueck * Math.ceil(poolUmfang() / 5);
    }
}
